home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 748 / 748.xpi / content / newscript.js < prev    next >
Text File  |  2010-02-11  |  3KB  |  103 lines

  1. /////////////////////////////// global variables ///////////////////////////////
  2.  
  3. var bundle = null;
  4. window.addEventListener("load", function() {
  5.   // init the global string bundle
  6.   bundle = document.getElementById("gm-browser-bundle");
  7.  
  8.   // load default namespace from pref
  9.   document.getElementById("namespace").value =
  10.       GM_prefRoot.getValue("newscript_namespace", "");
  11.  
  12.   // default the includes with the current page's url
  13.   document.getElementById("includes").value =
  14.       window.opener.document.getElementById("content").selectedBrowser
  15.       .contentWindow.location.href;
  16. }, false);
  17.  
  18. ////////////////////////////////// functions ///////////////////////////////////
  19.  
  20. function doInstall() {
  21.   var script = createScriptSource();
  22.   if (!script) return false;
  23.  
  24.   // put this created script into a file -- only way to install it
  25.   var tempFile = getTempFile();
  26.   var foStream = getWriteStream(tempFile);
  27.   foStream.write(script, script.length);
  28.   foStream.close();
  29.  
  30.   var config = GM_getConfig();
  31.  
  32.   // create a script object with parsed metadata,
  33.   script = config.parse(script, tempFile);
  34.  
  35.   // make sure entered details will not ruin an existing file
  36.   if (config.installIsUpdate(script)) {
  37.     var overwrite = confirm(bundle.getString("newscript.exists"));
  38.     if (!overwrite) return false;
  39.   }
  40.  
  41.   // finish making the script object ready to install
  42.   script.setDownloadedFile(tempFile);
  43.  
  44.   // install this script
  45.   config.install(script);
  46.  
  47.   // and fire up the editor!
  48.   openInEditor(script);
  49.  
  50.   // persist namespace value
  51.   GM_prefRoot.setValue("newscript_namespace", script.namespace);
  52.  
  53.   return true;
  54. }
  55.  
  56. // assemble the XUL fields into a script template
  57. function createScriptSource() {
  58.   var script = ["// ==UserScript=="];
  59.  
  60.   var name = document.getElementById("name").value;
  61.   if ("" == name) {
  62.     alert(bundle.getString("newscript.noname"));
  63.     return false;
  64.   } else {
  65.     script.push("// @name           " + name);
  66.   }
  67.  
  68.   var namespace = document.getElementById("namespace").value;
  69.   if ("" == namespace) {
  70.     alert(bundle.getString("newscript.nonamespace"));
  71.     return false;
  72.   } else {
  73.     script.push("// @namespace      " + namespace);
  74.   }
  75.  
  76.   var descr = document.getElementById("descr").value;
  77.   if ("" != descr) {
  78.     script.push("// @description    " + descr);
  79.   }
  80.  
  81.   var includes = document.getElementById("includes").value;
  82.   if ("" != includes) {
  83.     includes = includes.match(/.+/g);
  84.     includes = "// @include        " + includes.join("\n// @include        ");
  85.     script.push(includes);
  86.   }
  87.  
  88.   var excludes = document.getElementById("excludes").value;
  89.   if ("" != excludes) {
  90.     excludes = excludes.match(/.+/g);
  91.     excludes = "// @exclude        " + excludes.join("\n// @exclude        ");
  92.     script.push(excludes);
  93.   }
  94.  
  95.   script.push("// ==/UserScript==");
  96.  
  97.   var ending = "\n";
  98.   if (window.navigator.platform.match(/^Win/)) ending = "\r\n";
  99.   script = script.join(ending);
  100.  
  101.   return script;
  102. }
  103.